package jcdatabase;

import java.io.PrintStream;

public class JCRow
{

    public JCTable table;
    private String value[];

    public JCRow(JCTable jctable)
    {
        value = new String[100];
        table = jctable;
        for(int i = 0; i < jctable.definition.numberOfColumns; i++)
            value[i] = "";

    }

    public final int getInt(int i)
    {
        if(value[i].equals(""))
            return 0;
        else
            return Integer.parseInt(value[i]);
    }

    public final int getInt(String s)
    {
        int i = getColumnNumber(s);
        if(value[i].equals(""))
            return 0;
        else
            return Integer.parseInt(value[i]);
    }

    public final String getString(int i)
    {
        return characterReplace(JCTable.stringWithTrailingCharactersTrimmed(value[i], ' '), '_', ' ');
    }

    public final String getString(String s)
    {
        int i = getColumnNumber(s);
        return characterReplace(JCTable.stringWithTrailingCharactersTrimmed(value[i], ' '), '~', ' ');
    }

    public final float getFloat(String s)
    {
        int i = getColumnNumber(s);
        if(value[i].equals(""))
            return 0.0F;
        else
            return Float.parseFloat(value[i]);
    }

    public final float getFloat(int i)
    {
        if(value[i].equals(""))
            return 0.0F;
        else
            return Float.parseFloat(value[i]);
    }

    public final boolean setInt(int i, int j)
    {
        return setString(i, "" + j);
    }

    public final boolean setInt(String s, int i)
    {
        return setString(s, "" + i);
    }

    public final boolean setString(String s, String s1)
    {
        int i = getColumnNumber(s);
        if(i == -1)
        {
            return false;
        } else
        {
            value[i] = s1;
            return true;
        }
    }

    public boolean setString(int i, String s)
    {
        value[i] = s;
        return true;
    }

    public boolean setFloat(String s, float f)
    {
        return setString(s, "" + f);
    }

    public boolean setFloat(int i, float f)
    {
        return setString(i, "" + f);
    }

    private int getColumnNumber(String s)
    {
        for(int i = 0; i < table.definition.numberOfColumns; i++)
            if(table.definition.columnName[i].equalsIgnoreCase(s))
                return i;

        System.err.println("Column name not found: " + s);
        return -1;
    }

    public static String characterReplace(String s, char c, char c1)
    {
        byte abyte0[] = s.getBytes();
        for(int i = 0; i < abyte0.length; i++)
            if(abyte0[i] == c)
                abyte0[i] = (byte)c1;

        return new String(abyte0);
    }
}
